home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / shells / scsh-0.4 / scsh-0 / scsh-0.4.2 / scsh / sunos / fdflags.scm < prev    next >
Text File  |  1995-10-13  |  2KB  |  84 lines

  1. ;;; Flags for open(2) and fcntl(2).
  2. ;;; Copyright (c) 1993 by Olin Shivers.
  3.  
  4. (define-syntax define-open-flags
  5.   (syntax-rules ()
  6.     ((define-errnos form ...)
  7.      (begin (define-enum-constant "open" . form) ...))))
  8.  
  9. (define-open-flags
  10.   (read            0)
  11.   (write        1)
  12.   (read+write        2)
  13.   (append        8)
  14.   (create        #x0200)
  15.   (exclusive        #x0800)
  16.   (no-control-tty    #x8000)
  17.   (nonblocking        #x4000)
  18.   (truncate        #x0400)
  19.  
  20. ;;; Not POSIX.
  21.   (no-delay    4)
  22.   (sync        #x2000))
  23.  
  24. (define open/access-mask
  25.   (bitwise-ior open/read
  26.            (bitwise-ior open/write open/read+write)))
  27.  
  28. ;;;; fcntl
  29. ;;;; Rough sketch only. Will define a separate proc for each fcntl command.
  30. ;
  31. ;;;; fcntl commands
  32. ;dup
  33. ;
  34. ;get-flags    ; Only gives close-on-exec bit.
  35. ;set-flags
  36. ;
  37. ;get-status    ; Returns open flags + get-status flags (below)
  38. ;set-status    ; Can set: append, sync, async, nbio, nonblocking, no-delay
  39. ;
  40. ;get-lock
  41. ;set-lock
  42. ;nonblocking-set-lock
  43. ;
  44. ;get-record-lock
  45. ;set-record-lock
  46. ;set-record-lock-noblock
  47. ;
  48. ;get-owner            ; Not POSIX
  49. ;set-owner            ; Not POSIX
  50. ;remote-set-lock        ; Not POSIX
  51. ;nonblocking-remote-set-lock    ; Not POSIX
  52. ;remote-get-lock        ; Not POSIX
  53. ;
  54. ;;;; Flags
  55. ;
  56. ;close-on-exec    ; get-flags
  57. ;
  58. ;async        ; get-status
  59. ;no-delay    ; get-status
  60. ;nbio        ; get-status
  61. ;
  62. ;lock/read    ; set-lock
  63. ;lock/write    ; set-lock
  64. ;lock/release    ; set-lock
  65.  
  66. ;;; These are internal; they are not part of the supported scsh interface.
  67.  
  68. (define fcntl/close-on-exec         1)
  69.  
  70. (define fcntl/dupfd            0)
  71. (define fcntl/get-fd-flags        1)
  72. (define fcntl/set-fd-flags        2)
  73. (define fcntl/get-file-flags        3)
  74. (define fcntl/set-file-flags        4)
  75. (define fcntl/get-owner                5)    ; F_GETOWN
  76. (define fcntl/set-owner                6)    ; F_SETOWN
  77. (define fcntl/get-record-lock        7)    ; F_GETLK
  78. (define fcntl/set-record-lock-noblock    8)    ; F_SETLK
  79. (define fcntl/set-record-lock        9)    ; F_SETLKW
  80.  
  81. (define lock/read    1)    ; F_RDLCK
  82. (define lock/write    2)    ; F_WRLCK
  83. (define lock/release    3)    ' F_UNLCK
  84.